import { h, ref } from 'vue';
import { cloneDeep } from 'lodash-es';
import { FormSchema } from '@/components/Form';
import { renderImage } from '@/utils';
import { useDictStore } from '@/store/modules/dict';

const dict = useDictStore();

export class State {
  public id = 0; // 用户ID
  public avatar = ''; // 头像
  public nickname = ''; // 微信昵称
  public mobile = ''; // 手机号
  public createdAt = ''; // 加入时间
  public roleId = 10; // 用户角色
  public memberStatus = 1; // 用户状态
  public label = 1; // 用户标签
  public source = 1; // 渠道来源
  public deptId = 0; // 部门ID
  public realName = ''; // 真实姓名
  public username = ''; // 帐号
  public passwordHash = ''; // 密码
  public salt = ''; // 密码盐
  public passwordResetToken = ''; // 密码重置令牌
  public integral = 0; // 积分
  public balance = 0; // 余额
  public sex = 1; // 性别
  public qq = ''; // qq
  public email = ''; // 邮箱
  public birthday = ''; // 生日
  public cityId = null; // 城市编码
  public address = ''; // 联系地址
  public pid = 0; // 上级管理员ID
  public level = 1; // 关系树等级
  public tree = ''; // 关系树
  public inviteCode = ''; // 邀请码
  public cash = null; // 提现配置
  public lastActiveAt = ''; // 最后活跃时间
  public remark = ''; // 备注
  public status = 1; // 状态
  public updatedAt = ''; // 修改时间
  public unionid = ''; // 微信唯一ID
  public memberType = 1; // 会员类型：1-月卡、2-季卡、3-年卡
  public expireTime = ''; // 到期时间

  constructor(state?: Partial<State>) {
    if (state) {
      Object.assign(this, state);
    }
  }
}

export function newState(state: State | Record<string, any> | null): State {
  if (state !== null) {
    if (state instanceof State) {
      return cloneDeep(state);
    }
    return new State(state);
  }
  return new State();
}

// 表单验证规则

// 表格搜索表单
export const schemas = ref<FormSchema[]>([
  {
    field: 'nickname',
    component: 'NInput',
    label: '微信昵称',
    componentProps: {
      placeholder: '请输入微信昵称',
      onUpdateValue: (e: any) => {
        console.log(e);
      },
    },
  },
  {
    field: 'mobile',
    component: 'NInput',
    label: '手机号',
    componentProps: {
      placeholder: '请输入手机号',
      onUpdateValue: (e: any) => {
        console.log(e);
      },
    },
  },
]);

// 表格列
export const columns = [
  {
    title: '用户ID',
    key: 'id',
    align: 'left',
    width: -1,
  },
  {
    title: '头像',
    key: 'avatar',
    align: 'left',
    width: -1,
    render(row: State) {
      return renderImage(row.avatar);
    },
  },
  {
    title: '微信昵称',
    key: 'nickname',
    align: 'left',
    width: -1,
  },
  {
    title: '手机号',
    key: 'mobile',
    align: 'left',
    width: -1,
  },
  {
    title: '加入时间',
    key: 'createdAt',
    align: 'left',
    width: -1,
  },
  {
    title: '用户角色',
    key: 'roleId',
    align: 'left',
    width: -1,
  },
  {
    title: '用户状态',
    key: 'memberStatus',
    align: 'left',
    width: -1,
  },
  {
    title: '用户标签',
    key: 'label',
    align: 'left',
    width: -1,
  },
  {
    title: '渠道来源',
    key: 'source',
    align: 'left',
    width: -1,
  },
  {
    title: '会员类型：1-月卡、2-季卡、3-年卡',
    key: 'memberType',
    align: 'left',
    width: -1,
  },
  {
    title: '到期时间',
    key: 'expireTime',
    align: 'left',
    width: -1,
  },
];

// 加载字典数据选项
export function loadOptions() {
  dict.loadOptions(['sys_normal_disable', 'xxb_yh_yhjs', 'xxb_yh_yhzt', 'xxb_yh_yhbq', 'xxb_yh_qdly']);
}